139b1e7e6c67864c7e20758fffd034b18a4b1531,server/src/main/java/com/orientechnologies/orient/server/handler/OAutomaticBackup.java,OAutomaticBackup,config,#OServer#OServerParameterConfiguration[]#,40
Before Change
OLogManager.instance().info(this, "Automatic backup handler installed and active: delay=%dms, targetDirectory=%s", delay,
targetDirectory);
Orient.getTimer().schedule(new TimerTask() {
@Override
public void run() {
OLogManager.instance().info(this, "[OAutomaticBackup] Scanning databases to backup...");
int ok = 0, errors = 0;
final Map<String, String> databaseNames = OServerMain.server().getAvailableStorageNames();
for (final Entry<String, String> dbName : databaseNames.entrySet()) {
boolean include;
if (includeDatabases.size() > 0)
include = includeDatabases.contains(dbName.getKey());
else
include = true;
if (excludeDatabases.contains(dbName.getKey()))
include = false;
if (include) {
final String fileName = OVariableParser.resolveVariables(targetFileName, OSystemVariableResolver.VAR_BEGIN,
OSystemVariableResolver.VAR_END, new OVariableParserListener() {
@Override
public String resolve(final String iVariable) {
if (iVariable.equalsIgnoreCase(VARIABLES.DBNAME.toString()))
return dbName.getKey();
else if (iVariable.startsWith(VARIABLES.DATE.toString())) {
return new SimpleDateFormat(iVariable.substring(VARIABLES.DATE.toString().length() + 1)).format(new Date());
}
// NOT FOUND
throw new IllegalArgumentException("Variable '" + iVariable + "' wasn't found");
}
});
final String exportFilePath = targetDirectory + fileName;
final ODatabaseDocumentTx db = new ODatabaseDocumentTx(dbName.getValue());
try {
db.setProperty(ODatabase.OPTIONS.SECURITY.toString(), Boolean.FALSE);
db.open("admin", "aaa");
final long begin = System.currentTimeMillis();
new ODatabaseExport(db, exportFilePath, new OCommandOutputListener() {
@Override
public void onMessage(final String iText) {
}
}).exportDatabase();
OLogManager.instance().info(
this,
"[OAutomaticBackup] - Backup of database '" + dbName.getValue() + "' completed in "
+ (System.currentTimeMillis() - begin) + "ms");
ok++;
} catch (IOException e) {
OLogManager.instance().error(this,
"[OAutomaticBackup] - Error on exporting database '" + dbName.getValue() + "' to file: " + exportFilePath, e);
errors++;
} finally {
db.close();
}
}
}
OLogManager.instance().info(this, "[OAutomaticBackup] Backup finished: %d ok, %d errors", ok, errors);
}
}, delay, delay);
}
@Override
After Change
}
};
if (firstTime == null)
Orient.getTimer().schedule(timerTask, delay, delay);
else
Orient.getTimer().schedule(timerTask, firstTime, delay);
}
@Override